package 剑指offer.顺时针打印矩阵_19;

import java.util.ArrayList;

/**
 * 输入一个矩阵，按照从外向里以顺时针的顺序依次打印出每一个数字，
 * 例如，如果输入如下4 X 4矩阵： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
 * 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
 * @author x
 * @summary
 */
public class Main {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
        ArrayList<Integer> res = new ArrayList<Integer>();
        int n = matrix.length;
        int m = matrix[0].length;
        int num = n*m;
        int x = 0;
        int y = 0;
        while(num > 0){
            for(int i = y; i < m && num > 0; i++){
            	res.add(matrix[y][i]);
            	num--;
            }
           	x++;
            for(int i = x; i < n && num > 0; i++){
            	res.add(matrix[i][m-1]);
            	num--;
            }
            m--;
            for(int i = m-1; i >=y && num > 0; i--){
            	res.add(matrix[n-1][i]);
            	num--;
            }
            n--;
            for(int i = n-1; i >=x && num > 0; i--){
            	res.add(matrix[i][y]);
            	num--;
            }
            y++;
        }
        return res;
    }
}
